'use strict'

/**
 * @param {Egg.Application} app - egg application
 * @param {String} prefix - 路由前缀
 */
module.exports = (app, prefix) => {
  const { router, controller } = app

  // 权限验证中间件
  const jwt = app.passport.authenticate('jwt', {
    session: false,
    successReturnToOrRedirect: null,
  })

  // 路由前缀，在 router.js 里引入多个路由，prefix 貌似会叠加，先不用，改用字符串拼接
  // router.prefix('/prefix')

  // ------------------------------登录登出
  router.post(prefix + '/login', controller.managerrecord.manager.login)
  router.post(prefix + '/logout', controller.managerrecord.manager.logout)
  // 获取用户信息
  router.get(prefix + '/manager/info', controller.managerrecord.manager.getInfo)

  // ------------------------------权限
  router.get(prefix + '/role', controller.managerrecord.role.getRoleList)
  router.get(prefix + '/role/:id', controller.managerrecord.role.getSingleRole)
  router.get(prefix + '/auth', controller.managerrecord.auth.getAuthList)
  router.get(prefix + '/auth/:id', controller.managerrecord.auth.getSingleAuth)
  router.get(
    prefix + '/auth/role/:role',
    controller.managerrecord.auth.getAuthListByRoleName
  )

  // ------------------------------员工
  // 获取全部员工信息
  router.get(
    prefix + '/staff',
    jwt,
    controller.managerrecord.staff.getStaffList
  )
  // 根据身份证号获取单个员工信息（验证注册唯一性）
  router.get(
    prefix + '/staff/:identitycardid',
    jwt,
    controller.managerrecord.staff.getSingleStaff
  )
  // 添加员工
  router.post(
    prefix + '/staff',
    jwt,
    controller.managerrecord.staff.createStaff
  )
  // 批量添加员工
  router.post(
    prefix + '/staff/all',
    jwt,
    controller.managerrecord.staff.createManyStaff
  )
  // 更新用户
  router.put(
    prefix + '/staff/:id',
    jwt,
    controller.managerrecord.staff.updateStaff
  )
  // 删除用户
  router.delete(
    prefix + '/staff/:id',
    jwt,
    controller.managerrecord.staff.deleteStaff
  )

  // -----------------------------部门
  // 获取部门列表
  router.get(
    prefix + '/department',
    jwt,
    controller.managerrecord.department.getDepartmentList
  )
  // 获取单个部门（这里原来是 /:departname）
  router.get(
    prefix + '/department/:id',
    jwt,
    controller.managerrecord.department.getSingleDepartment
  )
  // 添加部门
  router.post(
    prefix + '/department',
    jwt,
    controller.managerrecord.department.createDepartment
  )
  // 更新部门
  router.put(
    prefix + '/department/:id',
    jwt,
    controller.managerrecord.department.updateDepartment
  )
  // 删除部门
  router.delete(
    prefix + '/department/:id',
    jwt,
    controller.managerrecord.department.deleteDepartment
  )

  // ------------------------------档案
  // 获取所有
  router.get(
    prefix + '/archive',
    jwt,
    controller.managerrecord.archive.getArchiveList
  )
  // 获取单个信息
  router.get(
    prefix + '/archive/:option',
    jwt,
    controller.managerrecord.archive.getSingleArchive
  )
  // 新增一个
  router.post(
    prefix + '/archive',
    jwt,
    controller.managerrecord.archive.createArchive
  )
  // 更新
  router.put(
    prefix + '/archive/:id',
    jwt,
    controller.managerrecord.archive.updateArchive
  )
  // 删除
  router.delete(
    prefix + '/archive/:id',
    jwt,
    controller.managerrecord.archive.deleteArchive
  )
  // 上传文件
  router.post(
    prefix + '/archive/upload',
    jwt,
    controller.managerrecord.archive.uploadFiles
  )

  // ------------------------------设备
  // 获取所有设备
  router.get(
    prefix + '/device',
    jwt,
    controller.managerrecord.device.getDeviceList
  )
  // 获取单个设备信息
  router.get(
    prefix + '/device/:id',
    jwt,
    controller.managerrecord.device.getSingleDevice
  )
  // 新增一个设备
  router.post(
    prefix + '/device',
    jwt,
    controller.managerrecord.device.createDevice
  )
  // 批量添加设备
  router.post(
    prefix + '/device/all',
    jwt,
    controller.managerrecord.device.createManyDevice
  )
  // 更新设备
  router.put(
    prefix + '/device/:id',
    jwt,
    controller.managerrecord.device.updateDevice
  )
  // 删除设备
  router.delete(
    prefix + '/device/:id',
    jwt,
    controller.managerrecord.device.deleteDevice
  )

  /**
   * 统计报表数据
   * id 数据类别
   * 1，用户分部门信息
   * 2，设备分部门信息
   */
  router.get(
    prefix + '/report/type/:id',
    jwt,
    controller.managerrecord.report.getReportData
  )
}
